# Copyright (C) 2006 Vladimir Prus
# Copyright (C) 2006 Arkadiy Vertleyb
# Use, modification and distribution is subject to the Boost Software
# License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)

# Boost Typeof Library test Jamfile

import testing ;
import set ;

# The special requirement is not ported yet.
#
#local rule special-requirements ( toolset variant : properties * )
#{
#    # Tru64/CXX6.5 hangs on most tests, so just turn it off completely.
#
#    if $(UNIX) && $(OS) = OSF
#    {
#        switch $(toolset)
#        {
#            case tru64cxx65* : properties =
#                [ replace-properties $(properties) : <build>no ] ;
#        }
#    }
#    
#    return $(properties) ;
#}

rule typeof-test ( source )
{
   return [ compile $(source) : <define>BOOST_TYPEOF_NATIVE :
                $(source:B)_native ]
          [ compile $(source) : <define>BOOST_TYPEOF_EMULATION :
                $(source:B)_emulation ] 
          ;        
}

rule all-tests ( )
{
    local all ;
#    for local t in [ set.difference [ glob *.cpp ] : odr1.cpp odr2.cpp ]
    for local t in [ set.difference [ glob *.cpp ] : [ glob odr*.cpp ] ]
    {
        all += [ typeof-test $(t) ] ;
    }
    all += [ run odr1.cpp odr2.cpp : : : <define>BOOST_TYPEOF_NATIVE :
                odr_native ] ;
    all += [ run odr1.cpp odr2.cpp : : : <define>BOOST_TYPEOF_EMULATION :
                odr_emulation ] ;		
    all += [ run odr_no_uns1.cpp odr_no_uns2.cpp : : : <define>BOOST_TYPEOF_EMULATION : 
                odr_no_uns ] ;		
    return $(all) ;    
}

test-suite "typeof" 
	:  [ all-tests ]
    ;
